#ifndef JASS_THREAD_H
#define JASS_THREAD_H

#include <iostream>
#include <stack>

class JassStackFrame; // Forward declaration
class GlobalScope;    // Forward declaration
class TriggerExecutionScope; // Forward declaration

class JassThread {
public:
    JassStackFrame* stackFrame;
    GlobalScope* globalScope;
    TriggerExecutionScope* triggerScope;
    int instructionPtr;
    bool sleeping = false;
    JassThread* parent;

    JassThread(JassStackFrame* stackFrame, GlobalScope* globalScope,
        TriggerExecutionScope* triggerScope, int instructionPtr);

    inline void setSleeping(bool sleeping) {
        this->sleeping = sleeping;
    }

    inline bool isSleeping() const {
        return sleeping;
    }
};

#endif